package com.yupi.yuoj.judge.strategy;


import com.yupi.yuoj.model.dto.question.JudgeCase;
import com.yupi.yuoj.judge.codesandbox.model.JudgeInfo;
import com.yupi.yuoj.model.entity.Question;
import com.yupi.yuoj.model.entity.QuestionSubmit;
import lombok.Data;

import java.util.List;

/**
 *
 * 用于定义在策略中传递的参数
 *
 * 策略模式的主要作用是允许你在运行时动态地选择和应用不同的算法或行为。这使得代码更加灵活、可扩展和易于维护。下面通过一个具体的例子来说明策略模式的作用。
 * 示例：在线编程题目的自动评判系统
 * 假设你正在开发一个在线编程题目平台，用户提交代码后，系统需要自动评判代码的正确性。不同的题目可能有不同的评判标准，例如：
 * 输入输出匹配：检查用户代码的输出是否与预期输出完全一致。
 * 性能测试：检查用户代码在特定输入下的执行时间是否在允许范围内。
 * 代码风格检查：检查用户代码是否符合某种代码风格规范。
 */
@Data
public class JudgeContext {
    private JudgeInfo judgeInfo;

    private List<String> inputList;

    private List<JudgeCase> judgeCaseList;

    private List<String> outputList;

    private Question question;

    private QuestionSubmit questionSubmit;


}
